<?php

/**
 * Description of VirtualLabs_Admin_PerfilEncendido
 *
 * @author markos
 */
class VirtualLabs_Admin_PerfilEncendido {

    /**
     * Recuperar los datos de perfil de encendido de una maquina virtual.
     *  
     * @param array $fields campos a recuperar
     * @param array $where array de condiciones
     * @return type
     * @throws Exception
     */
    public function getPerfilEncendido($fields = array(), $where = array()) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()->from("perfil_encendido", $fields);
        foreach ($where as $key => $value) {
            $select->where("$key {$value['criteria']} ?", $value['value']);
        }
        $debug = Zend_Registry::get(VirtualLabs_Common::DEBUG_LOG);
        $debug->debug($select);
        try {
            return $db->fetchRow($select);
        } catch (Exception $e) {
            $logger = Zend_Registry::get(VirtualLabs_Exception::ERROR_LOG);
            $logger->debug($e->getMessage());
            $logger->debug($e->getTraceAsString());
            throw $e;
        }
    }

    public function getPerfilEncendidoByLab($codigoLaboratorio) {
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()->from(array("pe" => "perfil_encendido"), '*')
                ->join(array("l" => "laboratorio"), "l.codigo_perfil_encendido = pe.codigo_perfil_encendido", array());
        $select->where("l.codigo_laboratorio = ?", $codigoLaboratorio);

        $debug = Zend_Registry::get(VirtualLabs_Common::DEBUG_LOG);
        $debug->debug($select);
        try {
            return $db->fetchRow($select);
        } catch (Exception $e) {
            $logger = Zend_Registry::get(VirtualLabs_Exception::ERROR_LOG);
            $logger->debug($e->getMessage());
            $logger->debug($e->getTraceAsString());
            throw $e;
        }
    }

    /**
     * Guarda el perfil de encendido de una maquina virtual en base de datos.
     * En caso $codigoPerfilEncendido este seteado se realiza un update utilizando 
     * este valor como condicion de busqueda, caso contrario realiza 
     * un insert en la base de datos.
     *  
     * @param array $data dataos del perfil 
     * @param int $codigoPerfilEncendido codigo de perfil de encendido para update
     * @return type
     * @throws Exception
     */
    public function save($data, $codigoPerfilEncendido = null) {
        $db = Zend_Db_Table::getDefaultAdapter();
        try {
            if (!is_null($codigoPerfilEncendido)) {
                $db->update("perfil_encendido", $data, "codigo_perfil_encendido = $codigoPerfilEncendido");
                $data['codigo_perfil_encendido'] = $codigoPerfilEncendido;
            } else {
                $db->insert("perfil_encendido", $data);
                $data['codigo_perfil_encendido'] = $db->lastInsertId("perfil_encendido");
            }
            return $data;
        } catch (Exception $e) {
            $logger = Zend_Registry::get(VirtualLabs_Exception::ERROR_LOG);
            $logger->debug($e->getMessage());
            $logger->debug($e->getTraceAsString());
            throw $e;
        }
    }

}

?>
